RAIS  3.2
C:/Projekte/RAIS/Specific Masks/MessageBoxTakeover.aspx.cs
Go to the documentation of this file.
00001 using System;
00002 using System.Collections.Generic;
00003 using System.Linq;
00004 using System.Web;
00005 using System.Web.UI;
00006 using System.Web.UI.WebControls;
00007 using RAIS.Common.UserManagement;
00008 using System.Globalization;
00009 
00010 namespace RAIS.UI.SpecificMasks
00011 {
00012     public partial class MessageBoxTakeover : System.Web.UI.Page
00013     {
00014         enum PageMode
00015         {
00016             viewTakeOver,
00017             addTakeOver,
00018             editTakeOver
00019         };
00020 
00021         #region event handlers
00022         protected void Page_Load(object sender, EventArgs e)
00023         {
00024             if (this.CurrentUser == null)
00025                 UI.Common.AccessManagement.SignOut(this);
00026 
00027 
00028             if (!this.IsPostBack)
00029             {
00030                 DDLyesNo.Items.Add(RAIS.ApplicationLogicLayer.Localisation.Translate("No", "ASP.messageboxtakeover_aspx", RAIS.Common.Constants.DEFAULT_LANGUAGE, this.CurrentUser.Language));
00031                 DDLyesNo.Items.Add(RAIS.ApplicationLogicLayer.Localisation.Translate("Yes", "ASP.messageboxtakeover_aspx", RAIS.Common.Constants.DEFAULT_LANGUAGE, this.CurrentUser.Language));
00032                 this.BTNdelete.Attributes.Add("onclick", string.Format("javascript: return confirm('{0}');", RAIS.Common.Messages.DELETE_QUESTION_MESSAGEBOX_RESTRICTION.Replace("'", "\\'")));
00033                 this.LBLusernameNoTranslation.Text = this.CurrentUser.Login;
00034                 this.LBLmessage.ForeColor = RAIS.UI.Common.Constants.COLOR_OF_MENU_BAR_TEXT_HIGHLIGHT;
00035                 this.LBLValidFromDescription.Text = UI.Common.DynamicMaskManagement.GetNationalDateFormatString(true);
00036                 this.LBLValidUntilDescription.Text = UI.Common.DynamicMaskManagement.GetNationalDateFormatString(true);
00037 
00038                 /*if (this.Session[RAIS.UI.Common.Constants.SELECTED_USER_TAG] != null)
00039                 {
00040                     this.TBSelectedUser.Text = ((UserData)this.Session[RAIS.UI.Common.Constants.SELECTED_USER_TAG]).Login;
00041                 }
00042                 else
00043                 {
00044                     this.TBSelectedUser.Text =  "";
00045                 }*/
00046                 //this.Session[RAIS.UI.Common.Constants.SELECTED_USER_TAG] = null;
00047                 //this.TBSelectedUser.Text = "";
00048 
00049 
00050                 //this.initSelectUserListbox();
00051                 this.initSelectUserDropDownList();
00052 
00053                 this.CurrentPageMode = PageMode.viewTakeOver;
00054                 UI.Common.Localisation.TranslateGridViewHeader(this.GVUserAssignments, this.ToString(), RAIS.Common.Constants.DEFAULT_LANGUAGE, this.CurrentUser.Language);
00055                 UI.Common.PageManagement.InitializePage(this, this.TreeView1);
00056 
00057                 if (this.DDLSelectedUser.Items.Count >= 0)
00058                 {
00059                     UserData bufferedUser = ((UserData)this.Session[RAIS.UI.Common.Constants.SELECTED_USER_TAG]);
00060                     if (this.Session[RAIS.UI.Common.Constants.SELECTED_USER_TAG] != null && this.userListContains(this.Level3Users, bufferedUser))
00061                     {
00062                         //this.TBSelectedUser.Text = ((UserData)this.Session[RAIS.UI.Common.Constants.SELECTED_USER_TAG]).Login;
00063                         //this.LBselectUser.SelectedValue = this.TBSelectedUser.Text;
00064                         this.DDLSelectedUser.SelectedValue = ((UserData)this.Session[RAIS.UI.Common.Constants.SELECTED_USER_TAG]).Login;
00065                     }
00066                     else
00067                     {
00068                         //this.LBselectUser.SelectedIndex = 0;
00069                         //this.TBSelectedUser.Text = this.LBselectUser.SelectedValue;
00070                         this.DDLSelectedUser.SelectedIndex = 0;
00071                     }
00072                     
00073                     /*if (this.SelectedUserAssignment != null)
00074                     {
00075                         this.initGridView();
00076                     }
00077                     else
00078                     {
00079                         this.GVUserAssignments.DataSource = new List<UserAssignment>();
00080                         this.GVUserAssignments.DataBind();
00081                     }*/
00082                     this.initGridView();
00083                     this.GVUserAssignments.SelectedIndex = -1;
00084                 }
00085                 else
00086                 {
00087                     //this.LBselectUser.SelectedIndex = -1;
00088                     this.DDLSelectedUser.SelectedIndex = -1;
00089                 }
00090             }
00091             //UI.Common.Localisation.TranslatePage(this);
00092             UI.Common.PageManagement.InitHelpMainMenu(LBTNdefault);
00093         }
00094 
00095 
00096         protected void GVUserAssignments_RowCommand(object sender, GridViewCommandEventArgs e)
00097         {
00098             if (e.CommandName.Equals("Select"))
00099             {
00100                 int rowIndex = Convert.ToInt32(e.CommandArgument);
00101                 this.GVUserAssignments.SelectedIndex = rowIndex;
00102                 this.EnableDisableControls();
00103             }
00104         }
00105 
00112         protected void LBTNlogout_Click(object sender, EventArgs e)
00113         {
00114             UI.Common.AccessManagement.SignOut(this);
00115         }
00122         protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
00123         {
00124             UI.Common.UserManagement.ProcessTreeViewOnRedirect(this.TreeView1);
00125         }
00126 
00127         protected void LBAvailableUsers_selectedIndexChanged(object sender, EventArgs e)
00128         {
00129             //this.checkAddDeleteButtons();
00130         }
00131 
00132 
00133         protected void DDLSelectedUser_SelectedIndexChanged(object sender, EventArgs e)
00134         {
00135             this.Session[RAIS.UI.Common.Constants.TAKEOVER_ASSIGNED_USERS] = null;
00136             initGridView();
00137         }
00138 
00139 
00146         protected void BTNadd_Click(object sender, EventArgs e)
00147         {
00148             //this.checkAddDeleteButtons();
00149             this.CurrentPageMode = PageMode.addTakeOver;
00150 
00151         }
00158         protected void BTNedit_Click(object sender, EventArgs e)
00159         {
00160             //this.checkAddDeleteButtons();
00161             this.CurrentPageMode = PageMode.editTakeOver;
00162         }
00169         protected void BTNdelete_Click(object sender, EventArgs e)
00170         {
00171             /*initializeMove();
00172             this.checkAddDeleteButtons();
00173             this.CurrentPageMode = PageMode.editTakeOver;*/
00174             bool success = true;
00175             success = this.deleteUserAssignment();
00176         }
00183         protected void BTNdiscard_Click(object sender, EventArgs e)
00184         {
00185             this.CurrentPageMode = PageMode.viewTakeOver;
00186             this.availableUsers = null;
00187             //this.assignedUsers = null;
00188             //this.initAlreadyAssignedListbox();  
00189 
00190         }
00197         protected void BTNsave_Click(object sender, EventArgs e)
00198         {
00199             string message = String.Empty;
00200             bool success = true;
00201 
00202             try
00203             {
00204                 DateTime from = DateTime.Parse(this.TBValidFrom.Text);
00205                 DateTime until = DateTime.Parse(this.TBValidUntil.Text);
00206                 if (from > until)
00207                 {
00208                     success = false;
00209                     message = RAIS.UI.Common.Constants.RESTRICTION_SAVE_DATE_FAIL;
00210                 }
00211             }
00212             catch (Exception)
00213             {
00214                 success = false;
00215             }
00216 
00217 
00218             if (!success)
00219             {
00220                 message = String.Empty.Equals(message) ? RAIS.UI.Common.Constants.TAKE_OVER_SAVE_FAIL : message;
00221                 RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult,
00222                                                                 message,
00223                                                                 success);
00224             }
00225             else
00226             {
00227                 if (this.CurrentPageMode == PageMode.addTakeOver)
00228                 {
00229                     success = this.createUserAssignment();
00230                 }
00231                 if (this.CurrentPageMode == PageMode.editTakeOver)
00232                 {
00233                     success = this.editUserAssignment();
00234                 }
00235             }
00236             
00237         }
00238 
00239         protected void DDLyesNo_selectedIndexChanged(object sender, EventArgs e)
00240         {
00241             this.initGridView();
00242         }
00243 
00244         #endregion
00245 
00246         #region private helpers
00247 
00248         private void initGridView()
00249         {
00250             if (ApplicationLogicLayer.UserManagement.GetUserAssignmentsForUser(this.selectedUser).Count < 1)
00251                 this.GVUserAssignments.EmptyDataText = "No restrictions have been taken over by this user";
00252             else
00253                 this.GVUserAssignments.EmptyDataText = "There are no active restriction take overs for this user";
00254             this.GVUserAssignments.DataSource = this.UserAssignments;
00255             this.GVUserAssignments.DataBind();
00256             this.GVUserAssignments.SelectedIndex = -1;
00257         }
00258 
00262         private void EnableDisableControls()
00263         {
00264             this.BTNadd.Enabled = (this.CurrentPageMode == PageMode.viewTakeOver) && (this.selectedUser != null);
00265             this.BTNedit.Enabled = (this.CurrentPageMode == PageMode.viewTakeOver) && (this.selectedUser != null) && (this.SelectedUserAssignment != null);
00266             this.BTNdelete.Enabled = (this.CurrentPageMode == PageMode.viewTakeOver) && (this.selectedUser != null) && (this.SelectedUserAssignment != null);
00267             this.BTNsave.Enabled = !(this.CurrentPageMode == PageMode.viewTakeOver);
00268             this.BTNdiscard.Enabled = !(this.CurrentPageMode == PageMode.viewTakeOver);
00269             /*this.FSMoveControls.Visible = !(this.CurrentPageMode == PageMode.viewTakeOver);
00270             this.LBLUserAssignment.Visible = !(this.CurrentPageMode == PageMode.viewTakeOver);
00271             this.LBCurrentlyAssignedUsers.Visible = (this.CurrentPageMode == PageMode.viewTakeOver);
00272             this.LBLCurrentlyAssigned.Visible = (this.CurrentPageMode == PageMode.viewTakeOver);
00273             this.LBLUserAssignment.Visible = !(this.CurrentPageMode == PageMode.viewTakeOver);
00274              * */
00275             this.DDLyesNo.Enabled = (this.CurrentPageMode == PageMode.viewTakeOver);
00276             this.DDLSelectedUser.Enabled = (this.CurrentPageMode == PageMode.viewTakeOver);
00277             this.LBDefinition.Enabled = (this.CurrentPageMode == PageMode.viewTakeOver);
00278             this.LBHistory.Enabled = (this.CurrentPageMode == PageMode.viewTakeOver);
00279             this.TBLEditFields.Visible = !(this.CurrentPageMode == PageMode.viewTakeOver);
00280 
00281             UI.Common.UserManagement.EnableCommonControls(this, (this.CurrentPageMode == PageMode.viewTakeOver));
00282         }
00283         #endregion
00284 
00285 
00286         #region private helpers
00287 
00288         private bool userListContains(List<UserData> list, UserData user)
00289         {
00290             foreach (UserData u in list)
00291             {
00292                 if (u.ID == user.ID)
00293                     return true;
00294             }
00295             return false;
00296         }
00297 
00298         private bool createUserAssignment()
00299         {
00300             UserAssignment ua = new UserAssignment();
00301             bool success = (this.DDLTakeOverUser.SelectedIndex != -1);
00302             DateTime validFrom = new DateTime();
00303             DateTime validUntil = new DateTime();
00304             string outputMessage = String.Empty;
00305             try
00306             {
00307                 validFrom = DateTime.Parse(this.TBValidFrom.Text);
00308                 validUntil = DateTime.Parse(this.TBValidUntil.Text);
00309             }
00310             catch (Exception e)
00311             {
00312                 success = false;
00313             }
00314 
00315             if (success)
00316             {
00317                 ua.ValidFrom = validFrom;
00318                 ua.ValidUntil = validUntil;
00319                 ua.TakenOverUser = this.availableUsers[this.DDLTakeOverUser.SelectedIndex];
00320 
00321                 success = UI.Common.UserManagement.createUserAssignmentForUser(ua, this.selectedUser, ref outputMessage);
00322             }
00323             else 
00324             {
00325                 outputMessage = RAIS.UI.Common.Constants.MESSAGEBOX_USERASSIGNMENT_ADDED_FAIL;
00326             }
00327 
00328             this.CurrentPageMode = PageMode.viewTakeOver;
00329             initGridView();
00330 
00331             if (outputMessage == null || outputMessage.Equals(string.Empty))
00332                 outputMessage = RAIS.UI.Common.Constants.MESSAGEBOX_USERASSIGNMENT_ADDED;
00333 
00334 
00335             RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult,
00336                                                                 outputMessage,
00337                                                                 success);
00338             return success;
00339         }
00340 
00341         private bool editUserAssignment()
00342         {
00343             UserAssignment ua = this.SelectedUserAssignment;
00344             bool success = (this.DDLTakeOverUser.SelectedIndex != -1);
00345             DateTime validFrom = new DateTime();
00346             DateTime validUntil = new DateTime();
00347             string outputMessage = String.Empty;
00348             try
00349             {
00350                 validFrom = DateTime.Parse(this.TBValidFrom.Text);
00351                 validUntil = DateTime.Parse(this.TBValidUntil.Text);
00352             }
00353             catch (Exception e)
00354             {
00355                 success = false;
00356             }
00357 
00358             if (success)
00359             {
00360                 ua.ValidFrom = validFrom;
00361                 ua.ValidUntil = validUntil;
00362                 ua.TakenOverUser = this.availableUsers[this.DDLTakeOverUser.SelectedIndex];
00363 
00364                 success = UI.Common.UserManagement.editUserAssignment(ua, ref outputMessage);
00365             }
00366             else
00367             {
00368                 outputMessage = RAIS.UI.Common.Constants.MESSAGEBOX_USERASSIGNMENT_EDITED_FAIL;
00369             }
00370 
00371             this.CurrentPageMode = PageMode.viewTakeOver;
00372             initGridView();
00373 
00374             if (outputMessage == null || outputMessage.Equals(string.Empty))
00375                 outputMessage = RAIS.UI.Common.Constants.MESSAGEBOX_USERASSIGNMENT_EDITED;
00376 
00377 
00378             RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult,
00379                                                                 outputMessage,
00380                                                                 success);
00381             return success;
00382         }
00383 
00384         private void initEdit()
00385         {
00386             UserAssignment ua = this.SelectedUserAssignment;
00387             if (ua != null)
00388             {
00389                 this.DDLTakeOverUser.SelectedValue = ua.TakenOverUser.Login;
00390                 char[] stripParenth = { '(', ')' };
00391                 string format = UI.Common.DynamicMaskManagement.GetNationalDateFormatString(true).Trim().Trim(stripParenth);
00392                 this.TBValidFrom.Text = ua.ValidFrom.ToString(format);
00393                 this.TBValidUntil.Text = ua.ValidUntil.ToString(format);
00394             }
00395         }
00396 
00397         private bool deleteUserAssignment()
00398         {
00399             bool success = this.selectedUser != null;
00400             string outputMessage = string.Empty;
00401             if (success)
00402             {
00403                 UserAssignment ua = this.SelectedUserAssignment;
00404 
00405                 success = UI.Common.UserManagement.deleteUserAssignment(ua, ref outputMessage);
00406             }
00407 
00408 
00409             this.CurrentPageMode = PageMode.viewTakeOver;
00410             initGridView();
00411 
00412             if (outputMessage == null || outputMessage.Equals(string.Empty))
00413                 outputMessage = RAIS.UI.Common.Constants.MESSAGEBOX_USERASSIGNMENT_DELETED;
00414 
00415 
00416             RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult,
00417                                                                 outputMessage,
00418                                                                 success);
00419             return success;
00420         }
00421 
00422         private UserAssignment SelectedUserAssignment
00423         {
00424             get
00425             {
00426                 if (this.UserAssignments != null && this.GVUserAssignments.SelectedIndex != -1 && this.GVUserAssignments.SelectedIndex < this.UserAssignments.Count)
00427                     return this.UserAssignments[this.GVUserAssignments.SelectedIndex];
00428                 else
00429                     return null;
00430             }
00431         }
00432 
00433         private void initSelectUserDropDownList()
00434         {
00435             this.DDLSelectedUser.DataSource = this.Level3Users;
00436             this.DDLSelectedUser.DataBind();
00437         }
00438 
00439         #endregion
00440 
00441         #region Properties
00442 
00443         public List<UserData> Level3Users
00444         {
00445             get 
00446             {
00447                 List<UserData> levelThreeUsers = UI.Common.UserManagement.GetLevelThreeUsers().Values.ToList<UserData>();
00448 
00449                 //filter
00450                 // only users that have restrictions set
00451                 List<UserData> usersToRemove = new List<UserData>();
00452                 foreach (UserData user in levelThreeUsers)
00453                 {
00454                     //if(UI.Common.UserManagement.getMessageBoxDataRoleByUser(user) == null)
00455                     if (UI.Common.UserManagement.getActiveMessageBoxRestrictionsForUser(user).Count < 1)
00456                         usersToRemove.Add(user);
00457                 }
00458                 foreach (UserData userRemove in usersToRemove)
00459                 {
00460                     levelThreeUsers.Remove(userRemove);
00461                 }
00462 
00463                 return levelThreeUsers;
00464             }
00465         }
00466 
00467         public List<UserAssignment> UserAssignments
00468         {
00469             get 
00470             {
00471                 if (this.DDLyesNo.SelectedIndex == 0)
00472                     return ApplicationLogicLayer.UserManagement.GetUserAssignmentsForUser(this.selectedUser, DateTime.Now);
00473                 else
00474                     return ApplicationLogicLayer.UserManagement.GetUserAssignmentsForUser(this.selectedUser);
00475             }
00476         }
00477 
00478         public List<UserData> availableUsers
00479         {
00480             get
00481             {
00482                 //if (this.Session[RAIS.UI.Common.Constants.TAKEOVER_AVAILABLE_USERS] == null)
00483                 //{
00484                 List<UserData> users = RAIS.UI.Common.UserManagement.GetLevelThreeUsers().Values.ToList<UserData>();
00485                 UserData todelete = new UserData();
00486                 foreach (UserData ud in users)
00487                 {
00488                     if (ud.ID == this.selectedUser.ID)
00489                         todelete = ud;
00490                 }
00491                 users.Remove(todelete);
00492                 
00493                     this.Session[RAIS.UI.Common.Constants.TAKEOVER_AVAILABLE_USERS] = users;
00494                 //}
00495                     
00496 
00497                 return (List<UserData>)this.Session[RAIS.UI.Common.Constants.TAKEOVER_AVAILABLE_USERS];
00498             }
00499             set
00500             {
00501                 this.Session[RAIS.UI.Common.Constants.TAKEOVER_AVAILABLE_USERS] = value;
00502             }
00503         }
00504 
00505         public UserData selectedUser
00506         {
00507             get
00508             {
00509                 try
00510                 {
00511                     UserData userData = null;
00512                     if (this.DDLSelectedUser.SelectedValue != null && this.DDLSelectedUser.SelectedValue != "")
00513                     {
00514                         userData = ApplicationLogicLayer.UserManagement.GetUserData(this.DDLSelectedUser.SelectedValue);
00515                     }
00516                     else if (this.Session[RAIS.UI.Common.Constants.SELECTED_USER_TAG] != null)
00517                     {
00518                         userData = (UserData)this.Session[RAIS.UI.Common.Constants.SELECTED_USER_TAG];
00519                     }
00520                     
00521                     this.Session[RAIS.UI.Common.Constants.SELECTED_USER_TAG] = userData;
00522                     return userData;
00523                 }
00524                 catch (Exception)
00525                 {
00526                     return null;
00527                 }
00528 
00529                 
00530             }
00531         }
00532 
00540         PageMode CurrentPageMode
00541         {
00542             get
00543             {
00544                 if (this.Session[UI.Common.Constants.TAKEOVER_EDIT_MODE_TAG] != null)
00545                 {
00546                     return (PageMode)this.Session[UI.Common.Constants.TAKEOVER_EDIT_MODE_TAG];
00547                 }
00548                 else
00549                     return PageMode.viewTakeOver;
00550             }
00551             set
00552             {
00553                 string message = string.Empty;
00554                 switch (value)
00555                 {
00556                     case PageMode.addTakeOver:
00557                         //UI.Common.UserManagement.InitializeCustomUsersListBox(this.LBAvailableUsers, this.availableUsers);
00558                         message = RAIS.UI.Common.Constants.ADDING_NEW_USER_ASSIGNMENT;
00559                         this.DDLTakeOverUser.DataSource = this.availableUsers;
00560                         this.DDLTakeOverUser.DataBind();
00561                         break;
00562                     case PageMode.editTakeOver: 
00563                         message = RAIS.UI.Common.Constants.EDITING_EXISTING_USER_ASSIGNMENT;
00564                         
00565                         //UI.Common.UserManagement.InitializeCustomUsersListBox(this.LBAvailableUsers, this.availableUsers);
00566                         this.DDLTakeOverUser.DataSource = this.availableUsers;
00567                         this.DDLTakeOverUser.DataBind();
00568                         initEdit();
00569                         //initializeMove();
00570                         break;
00571 
00572                     default:
00573                         this.Session[RAIS.UI.Common.Constants.TAKEOVER_ASSIGNMENT_TEMPORARY_TAG] = null;
00574                         message = string.Empty;
00575                         this.initSelectUserDropDownList();
00576                         break;
00577                 }
00578                 RAIS.UI.Common.MessageDisplay.DisplayReturnMessage(this.LBLresult, message, true);
00579                 this.Session[UI.Common.Constants.TAKEOVER_EDIT_MODE_TAG] = value;
00580                 this.EnableDisableControls();
00581             }
00582         }
00583 
00587         protected UserData CurrentUser
00588         {
00589             get { return (UserData)this.Session[UI.Common.Constants.CURRENT_USER_TAG]; }
00590         }
00591         #endregion
00592     }
00593 }